1. Field
This disclosure generally relates to the field of computer systems. More particularly, the disclosure relates to batch scheduling.
2. General Background
Many current computer systems utilize batch scheduling to execute a series of programs without manual intervention. Batch scheduling allows large sets of data to be processed in batches. Current batch scheduling systems typically submit tasks directly to the base operating system of a compute node that is to run the task or to a virtual machine (“VM”) that is not directly managed by the batch scheduling system itself. The compute node may be a computing device, a program executed on a computing device, an operating system, or the like. Further, a computing device, e.g., a server, may have one or more compute nodes. When a compute node is resource constrained, e.g., by limitations regarding a central processing unit (“CPU”), memory, or the like, tasks may be discarded to free up resources and rerun on another compute node at a later point. Most batch scheduling systems in high performance computing are utilized for processing batches of large amounts of data, which does not adequately scale the batch processing to optimize utilization of resources. For example, the current batch processing systems often overutilize certain resources, but underutilize other resources. Many servers perform intensive processing tasks while other processors perform very little processing.